package org.jeecg.modules.demo.weixin.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.modules.demo.weixin.vo.CouponUserVo;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Description: pay_order
 * @Author: jeecg-boot
 * @Date: 2023-10-23
 * @Version: V1.0
 */
@Data
@TableName("pay_order")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "pay_order对象", description = "pay_order")
public class PayOrder implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
//    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "id")
    private Integer id;
    /**
     * 订单编号
     */
    @Excel(name = "订单编号", width = 15)
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    /**
     * 玩法名称
     */
    @Excel(name = "玩法名称", width = 15)
    @ApiModelProperty(value = "玩法名称")
    private String trkName;
    /**
     * 游戏人数
     */
    @Excel(name = "游戏人数", width = 15)
    @ApiModelProperty(value = "游戏人数")
    private Integer count;
    /**
     * 优惠价格
     */
    @Excel(name = "优惠价格", width = 15)
    @ApiModelProperty(value = "优惠价格")
    private BigDecimal activityPrice;
    /**
     * 商品总金额
     */
    @Excel(name = "商品总金额", width = 15)
    @ApiModelProperty(value = "商品总金额")
    private BigDecimal totalPrice;
    /**
     * 付款金额
     */
    @Excel(name = "付款金额", width = 15)
    @ApiModelProperty(value = "付款金额")
    private BigDecimal payPrice;
    /**
     * 状态（2:支付已完成；1:待支付；3:已退款；4：已取消）
     */
    @Excel(name = "状态（2:支付已完成；1:待支付；3:已退款；4：已取消）", width = 15)
    @Dict(dicCode = "Mer_Jerking_payStatus")
    @ApiModelProperty(value = "状态（2:支付已完成；1:待支付；3:已退款；4：已取消）")
    private String payStatus;
    /**
     * 付款时间
     */
    @Excel(name = "付款时间", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "付款时间")
    private Date payTime;
    /**
     * 付款模式(1 直接支付 2 自动扣除 3 客户申请从余额扣除 4使用优惠券)
     */
    @Excel(name = "付款模式(1 直接支付 2 自动扣除 3 客户申请从余额扣除 4使用优惠券)", width = 15)
    @ApiModelProperty(value = "付款模式(1 直接支付 2 自动扣除 3 客户申请从余额扣除 4使用优惠券)")
    @Dict(dicCode = "tMer_Jerking_payMode")
    private String payMode;
    /**
     * 订单状态（1进行中，2取消）
     */
    @Excel(name = "订单状态（1进行中，2取消）", width = 15)
    @ApiModelProperty(value = "订单状态（1进行中，2取消）")
    @Dict(dicCode = "Mer_Jerking_orderStatus")
    private String orderStatus;
    /**
     * 支付交易号（如微信支付交易号）
     */
    @Excel(name = "支付交易号（如微信支付交易号）", width = 15)
    @ApiModelProperty(value = "支付交易号（如微信支付交易号）")
    private String transactionId;
    /**
     * 用户id
     */
    @Excel(name = "用户id", width = 15)
    @ApiModelProperty(value = "用户id")
    private Integer userId;
    /**
     * 如微信appid
     */
    @Excel(name = "如微信appid", width = 15)
    @ApiModelProperty(value = "如微信appid")
    private String appId;
    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 更新时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
    /**
     * 预支付ID
     */
    @Excel(name = "预支付ID", width = 15)
    @ApiModelProperty(value = "预支付ID")
    private String prepayId;
    /**
     * 商品描述
     */
    @Excel(name = "商品描述", width = 15)
    @ApiModelProperty(value = "商品描述")
    private String description;
    /**
     * 统一下单nonce_str
     */
    @Excel(name = "统一下单nonce_str", width = 15)
    @ApiModelProperty(value = "统一下单nonce_str")
    private String nonceStr;
    /**
     * 统一下单签名
     */
    @Excel(name = "统一下单签名", width = 15)
    @ApiModelProperty(value = "统一下单签名")
    private String paySign;
    /**
     * 设备标识
     */
    @Excel(name = "设备标识", width = 15)
    @ApiModelProperty(value = "设备标识")
    private String devCode;
    /**
     * 预约ID
     */
    @Excel(name = "预约ID", width = 15)
    @ApiModelProperty(value = "预约ID")
    private String yuyueId;
    /**
     * 支付类型（WeChat：微信支付；Meituan：美团支付；Tiktok：抖音支付；SCard：次卡支付；ValueCard：储值卡支付）
     */
    @Excel(name = "支付类型（WeChat：微信支付；Meituan：美团支付；Tiktok：抖音支付；SCard：次卡支付；ValueCard：储值卡支付）", width = 15)
    @ApiModelProperty(value = "支付类型（WeChat：微信支付；Meituan：美团支付；Tiktok：抖音支付；SCard：次卡支付；ValueCard：储值卡支付）")
    @Dict(dicCode = "Mer_Jerking_payType")
    private String payType;
    /**
     * 场次的购买类型
     */
    @Excel(name = "场次的购买类型", width = 15)
    @ApiModelProperty(value = "场次的购买类型")
    private String buyType;
    /**
     * 商家id
     */
    @Excel(name = "商家id", width = 15)
    @ApiModelProperty(value = "商家id")
    private String merchantId;
    /**
     * 退款金额
     */
    @Excel(name = "退款金额", width = 15)
    @ApiModelProperty(value = "退款金额")
    private BigDecimal refundFee;
    /**
     * 三方退款单号
     */
    @Excel(name = "三方退款单号", width = 15)
    @ApiModelProperty(value = "三方退款单号")
    private String refundId;
    /**
     * 退款时间
     */
    @Excel(name = "退款时间", width = 15)
    @ApiModelProperty(value = "退款时间")
    private Date refundTime;

    /**
     * 订单类型 1 储值 2 次卡 3 商品 4 抖音 5美团 6 商家普通商品 7 扣次订单
     */
    @Excel(name = "订单类型", width = 15)
    @ApiModelProperty(value = "订单类型")
    @Dict(dicCode = "Mer_PayOrder_orderType")
    private Integer orderType;
    /**
     * 商家id
     */
    @Excel(name = "商家id", width = 15)
    @ApiModelProperty(value = "商家id")
    private String merchantName;
    /**
     * 充值人 （表示是哪个店员生成的订单 用于店员统计）
     */
    @Excel(name = "充值人 （表示是哪个店员生成的订单 用于店员统计）", width = 15)
    @ApiModelProperty(value = "充值人 （表示是哪个店员生成的订单 用于店员统计）")
    private String rechargeUser;

    /**
     * 赠送金额
     */
    @Excel(name = "赠送金额", width = 15)
    @ApiModelProperty(value = "赠送金额")
    private BigDecimal givePrice;

    /**
     * 分账类型（0 未分账 1 已分账 2 不可分）
     */
    @Excel(name = "分账类型（0 未分账 1 已分账 )", width = 15)
    @ApiModelProperty(value = "分账类型（0 未分账 1 已分账 ）")
    private Integer splitType;
    /**
     * 来源渠道（0 小程序 1 收银台）
     */
    @Excel(name = "来源渠道（0 小程序 1 收银台）", width = 15)
    @ApiModelProperty(value = "来源渠道（0 小程序 1 收银台）")
    private Integer sourceType;
    @Excel(name = "分账记录 id", width = 15)
    @ApiModelProperty(value = "分账记录 id")
    private Integer recordId;

    @Excel(name = "手续费ids", width = 15)
    @ApiModelProperty(value = "手续费ids")
    private String recordFeeIds;
    @TableField(exist = false)
    private String orderIds;

    /**
     * 积分
     */
    private BigDecimal integral;


    /**
     * 前端传参商户的id
     */
    @TableField(exist = false)
    private String merId;

    /**
     * 前端传参商户的id
     */
    @TableField(exist = false)
    private String username;
    /**
     * 手机号码
     */
    @Excel(name = "手机号码", width = 15)
    @ApiModelProperty(value = "手机号码")
    private String phone;
    /**
     * 券码id（不是原始券号）
     */
    @Excel(name = "券码id", width = 15)
    @ApiModelProperty(value = "券码id")
    private String certificateId;
    /**
     * 是否开启组合付款（0-否 1-是）
     */
    @Excel(name = "是否开启组合付款（0-否 1-是）", width = 15)
    @ApiModelProperty(value = "是否开启组合付款（0-否 1-是）")
    @Dict(dicCode = "Mer_Jerking_isGood")
    private Boolean combinationPayment;
    /**
     * 现金支付金额
     */
    @Excel(name = "现金支付金额", width = 15)
    @ApiModelProperty(value = "现金支付金额")
    private BigDecimal cashPay;
    /**
     * 余额支付金额
     */
    @Excel(name = "余额支付金额", width = 15)
    @ApiModelProperty(value = "余额支付金额")
    private BigDecimal balancePay;
    /**
     * 推荐人
     */
    @Excel(name = "推荐人", width = 15)
    @ApiModelProperty(value = "推荐人")
    private Integer referenceBy;

    /**
     * 美团团购code
     */
    @Excel(name = "美团团购code", width = 15)
    @ApiModelProperty(value = "美团团购code")
    private String mtCode;
    /**
     * 储值卡号
     */
    @Excel(name = "储值卡号", width = 15)
    @ApiModelProperty(value = "储值卡号")
    private String valueNumber;

    /**
     * 是否使用优惠券
     */
    @Excel(name = "是否使用优惠券", width = 15)
    @ApiModelProperty(value = "是否使用优惠券")
    private Integer isCoupon;
    /**
     * 支付商家类型（0 服务商  1 商家）
     */
    @Excel(name = "支付商家类型（0 服务商  1 商家）", width = 15)
    @ApiModelProperty(value = "支付商家类型（0 服务商  1 商家）")
    private Integer merchantType;

    /**
     * 实际支付价钱
     */
    @Excel(name = "实际支付价钱", width = 15)
    @ApiModelProperty(value = "实际支付价钱")
    private BigDecimal actualPrice;


//-----------------------不是数据库字段---------------------------------------------

    /**
     * 创建时间
     */

    @TableField(exist = false)
    private String startTime;
    /**
     * 更新时间
     */
    @TableField(exist = false)
    private String endTime;

    /**
     * 等级
     */
    @TableField(exist = false)
    private Integer level;

    /**
     * 等级名称
     */
    @TableField(exist = false)
    private String levelName;
    /**
     * 用户呢称
     */
    @TableField(exist = false)
    private String nickName;



    //--------------------------订单详情返回数据-------------------------------
    /**
     *  7 扣次
     */
    @TableField(exist = false)
    private SmtOnceCardDeduction smtOnceCardDeduction;


    /**
     * 次卡充值记录
     */
    @TableField(exist = false)
    private List<SmtOnceCardUsers> cardUsers;


    /**
     * 商家商品
     */
    @TableField(exist = false)
    private List<SmtMerchantShopRecord> shopRecordList;


    /**
     * 平台商品
     */
    @TableField(exist = false)
    private List<SmtMerchantShopRecord> storeRecordList;

    //------------------------优惠券-----------------------------------
    /**
     * 优惠券
     */
    @TableField(exist = false)
    private CouponUserVo couponUserVo;

}
